A number of reliable techniques exist for detecting a software-based virtual machine environment. Examples of software-based virtualization products include Microsoft Virtual Server, Microsoft Virtual PC, and VMWare® (available from VMWare, Inc. of Palo Alto, Calif.). VMWare® has an x86 instruction for a VMWare® virtual processor. However, the x86 instruction is an invalid instruction for a physical processor. Similarly, Microsoft Virtual PC and Microsoft Virtual Server both have a VMCPUID instruction, which is a valid instruction in a virtual machine environment, but is an invalid instruction for a physical processor.
A technique exists for detecting a hardware-based virtual machine environment. However, the technique relies on having certain specific information about a physical processor, such as, for example, a specified frequency of operation of the processor.